// \u4e00-\u9fa5] 中文验证规则

Page({
  data: {
    // 一定要注意使用 model:value 绑定时，数据一定要放到最外层

    point: '', // 小区
    building: '', // 楼栋
    room: '', // 房间号
    gender: 1, // 性别
    name: '', // 姓名
    mobile: '', // 手机号

    idcardFrontUrl: '', // '/static/images/avatar_1.jpg', // 身份证正面照
    idcardBackUrl: '', // '/static/images/avatar_2.jpg', // 身份证背面照
  },
  onLoad({ point, building, room }) {
    // 获取并记录地址参数
    this.setData({ point, building, room })
  },

  // 验证业主姓名
  verifyName() {
    // 验证业主姓名（必须为汉字）
    const reg = /^[\u4e00-\u9fa5]{2,5}$/
    // 验证业主姓名
    const valid = reg.test(this.data.name.trim())
    // 验证结果提示
    if (!valid) wx.utils.toast('请填写真实中文姓名!')
    // 返回验证结果
    return valid
  },
  verifyMobile() {
    // 验证手机号
    const reg = /^[1][3-8][0-9]{9}$/
    const valid = reg.test(this.data.mobile)
    // 验证结果提示
    if (!valid) wx.utils.toast('请填写正确的手机号码!')
    // 返回验证结果
    return valid
  },
  verifyPicture() {
    // 图片地址不能为空
    const valid = !!this.data.idcardBackUrl && !!this.data.idcardFrontUrl
    // 验证结果提示
    if (!valid) wx.utils.toast('请上传身份证照片!')
    // 返回验证结果
    return valid
  },

  async submitForm() {
    // 逐个验证表单的数据
    if (!this.verifyName()) return
    if (!this.verifyMobile()) return
    if (!this.verifyPicture()) return

    const formData = wx.utils.omit(this.data, ['__webviewId__'])

    // 请求数据接口
    const { code } = await wx.http.post('/room', formData)
    // 检测接口调用的结果
    if (code !== 10000) return wx.utils.toast('添加房屋失败!')

    if (getCurrentPages().length > 2) {
      wx.navigateBack({
        delta: getCurrentPages().length - 2,
      })
    } else {
      wx.reLaunch({
        url: '/house_pkg/pages/list/index',
      })
    }
  },
  // goList() {
  //   wx.reLaunch({
  //     url: '/house_pkg/pages/list/index',
  //   })
  // },
  removePicture(ev) {
    // 移除图片的类型（身份证正面或反面）
    const type = ev.mark?.type
    this.setData({ [type]: '' })
  },

  async uploadPicture(e) {
    // console.log(e.mark)

    const {
      tempFiles: [{ tempFilePath }],
    } = await wx.chooseMedia({
      count: 1, // 只能选择1张图片
      mediaType: ['image'], // 只能选择图片类型
      sizeType: ['compressed'], // 默认为压缩模式
    })

    // console.log(tempFilePath, 'tempFilePath')

    // 抽方法，抽组件，考虑 入口（参数 或 属性|插槽） 和 出口（返回值 或者 自定义事件|作用域插槽） 即可

    // 例如1，提取一个上传文件的公共方法：
    // 入口（形参）：临时地址，成功回调（在线图片地址）
    // 出口（返回值）：无

    // 例如2，提取一个上传文件的公共方法：
    // 入口（形参）：临时地址
    // 出口（返回值）：Promise（将 在线图片地址 作为 value）

    // 调用接口上传图片
    wx.uploadFile({
      url: wx.http.baseURL + '/upload',
      filePath: tempFilePath, // media.tempFiles[0].tempFilePath,
      name: 'file',
      // 只有上传头像时，才需要指定 type: 'avatar'
      // formData: {
      //   type: 'avatar'
      // },
      header: {
        Authorization: getApp().globalData.token,
      },
      success: (res) => {
        // 转换 json 数据
        const data = JSON.parse(res.data)
        // 检测接口调用结果
        if (data.code !== 10000) return wx.utils.toast('上传图片失败!')

        // 保存并预览图片地址
        this.setData({
          // data.data.url 就是上传成功后 返回的 在线图片地址
          [e.mark.type]: data.data.url,
        })
      },
    })
  },
})
